/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.osdtsystem.estimator;

import org.osdtsystem.hierarchy.HClass;
import org.osdtsystem.hierarchy.Hierarchy;
import org.osdtsystem.dataset.HierarchyView;

/**
 * Interface for estimators with hierarchy support.
 * @param <H> the type of hierarchy classes in the hierarchy
 * @param <HT> the type of the hierarchy
 * @author Matthias Buch-Kromann and Martin Haulrich
 */
public interface HierarchyEstimator<H extends HClass, HT extends Hierarchy<H>>
        extends Estimator {
    // Associated hierarchy
    public HT hierarchy();

    // View
    @Override
    public HierarchyView<H> view();

    // Estimator evaluation on classes and data points
    public double evaluate(H hclass);
    public double evaluateUnion(H... union);
    public double evaluateDifference(H x, H... union);
}